package com.itheima.d2_udp.no1;

import java.net.DatagramPacket;
import java.net.DatagramSocket;

//目标：掌握udp接收数据
public class ReceiveDemo01 {
    public static void main(String[] args) throws Exception {
        /**
         * Socket通道：
         *      DatagramSocket(int port)：创建接收端的Socket对象并指定端口号
         *
         * 数据包对象：
         *      DatagramPacket(byte[] buf, int length)
         *
         * 常用方法：
         *      receive(DatagramPacket p)：接受数据包
         *
         * 数据包常用方法：
         *      getLength()：获得实际接收到的字节个数
         */

        //1.创建DatagramSocket对象，接收数据的人，需要指定自己的端口号
        DatagramSocket socket = new DatagramSocket(10001);

        //2.创建DatagramPacket对象，用来打包对方发过来的数据
        byte[] bys = new byte[1024 * 64];
        DatagramPacket packet = new DatagramPacket(bys, 1024 * 64);

        //3.开始接收数据
        socket.receive(packet);

        //上面receive方法结束后，数据都丢到了bys数组中，如果要解码数据，还需要知道接受了多少个字节数据
        int length = packet.getLength();

        //解码数据，解码bys，从0号索引解码length个
        String msg = new String(bys, 0, length);
        System.out.println("客户端发送的数据：" + msg);

        //4.释放资源
        socket.close();
    }
}
